package conduitevoiture;

import java.util.*;

/**
 *
 * @author Dos Reis
 */
public class Voiture {
    
    private double _vitesse;
    private Coordonnee _coordonnee;
    private int _angle;
    
    public Voiture(double vitesse, Coordonnee coordonnee)
    {
        this._vitesse = vitesse;
        this._coordonnee = coordonnee;
        TimerVoiture timerVehicule = new TimerVoiture(this);
        Timer timer = new Timer();
        timer.schedule(timerVehicule, new Date(),1);
    }

    public Coordonnee getCoordonnee() {
        return _coordonnee;
    }

    public void setCoordonnee(Coordonnee coordonnee) {
        this._coordonnee = coordonnee;
    }

    public double getVitesse() {
        return _vitesse;
    }

    public void setVitesse(double vitesse) {
        this._vitesse = vitesse;
    }
    
    public void topTimer()
    {
        this._vitesse = 0;
    }
    
    public void seDeplacer()
    {
        //this._coordonnee.setY(this._coordonnee.getY()-(this._vitesse/1000));
    	double step = _vitesse / 1000;
    	double rad = (Math.PI / 180) * _angle;
    	double deltaX = Math.acos(rad) * step;
    	double deltaY = Math.asin(rad) * step;
    	_coordonnee.setX(_coordonnee.getX() + deltaX);
    	_coordonnee.setY(_coordonnee.getY() + deltaY);
    }
    
    public void tourner(Coordonnee.Direction direction) {
    	switch (direction) {
    	case GAUCHE:
    		_angle -= 20;
    		break;
    	case DROITE:
    		_angle += 20;
    	}
    }
    
    public int angle() {
    	return _angle;
    }
    
    public void accelerer(double acceleration)
    {
        this._vitesse += acceleration;
    }
    
    public void decelerer()
    {
        this._vitesse -= 1;
    }
    
    public void freiner(double deceleration)
    {
        this._vitesse -= deceleration;
    }
}
